#-*- coding: UTF-8 -*-

# 实验功能总入口
# 运行：
# python test.py <参数> <信息>

import sys
import getopt

# 帮助信息
def help_msg():
    print('帮助信息:')
    print('-h, --help: print help message.')
    print('-o, --output: output file')
    print('-c, --cfg: config')

# 主程序
def main(argv):
    # 没有给命令行参数直接退出
    if len(argv) <= 1:
        help_msg()
        sys.exit(0)

    # getopt(): 处理参数的函数
    # argv[1:]: python切片，过滤掉第一个参数(即脚本名)
    # 'ho:c:': 短格式选项, 有冒号跟着表示有附加参数
    # ['help', 'output=', 'cfg=']: 长格式选项
    # return: opts & args
    # 前者是一个两元组的列表。每个元素为:(选项串,附加参数)
    # 后者是不在格式信息内的多余命令行输入信息
    try:
        opts, args = getopt.getopt(argv[1:], 'ho:c:', ['help', 'output=', 'cfg='])
    except getopt.GetoptError as err:
        print(str(err))
        sys.exit(2)

    # print("额外信息args:%s" % str(args))

    for ope, attr in opts:
        if ope in ('-h', '--help'):
            help_msg()
            sys.exit(1)
        elif ope in ('-o', '--output'):
            # 创建输出文件
            print("参数是：%s; 值是：%s" % (ope, attr))
        elif ope in ('-c', '--cfg'):
            # 添加配置文件信息
            print("参数是：%s; 值是：%s" % (ope, attr))
        else:
            print('unhandled option')
            sys.exit(3)

if __name__ == '__main__':
    main(sys.argv)